03. 布尔函数的门级最小化
1. 布尔函数简化概述 (Overview of Boolean Function Simplification)
1.1 简化目标 (Simplification Goal)
- 布尔函数的真值表 (Truth Table) 表示是唯一的,但其代数表达式 (Algebraic Expression) 并非唯一。
- 数字电路的复杂性(门数量)与代数表达式的复杂性(文字数量,即变量及其补数的总数)成正比。
- 目标:找到最简的代数表达式,即包含最少项 (Product Term) 且每项中文字数量最少。这能降低电路成本和复杂性。
- 例如: (3 个与项,8 个文字) 可以简化为 (2 个与项,4 个文字)。
1.2 简化方法 (Simplification Methods)
- 代数法 (Algebraic Method):利用布尔代数 (Boolean Algebra) 定理进行化简。
- 卡诺图法 (Karnaugh Map, K-map):一种图形化方法,用于手动简化布尔函数。
2. 卡诺图法 (Karnaugh Map Method)
2.1 卡诺图基本概念 (Basic Concepts of K-map)
2.1.1 定义 (Definition)
- 卡诺图是一个方格阵列,每个方格代表一个最小项 (Minterm)。
- 它将布尔函数的真值表以图形方式呈现,方便识别相邻最小项。
- 每个卡诺图定义一个唯一的布尔函数。
2.1.2 最小项合并原理 (Principle of Minterm Merging)
- 在卡诺图中,任意两个水平或垂直相邻的方格所代表的最小项,只在一个变量上互补 (Complementary),其他变量都相同。
- 将这些相邻的最小项进行逻辑或 (OR) 运算时,那个互补的变量会被消除,从而简化表达式。
- 例如: 和 在卡诺图中相邻。
- 。变量 被消除了。
2.2 卡诺图的构造与表示 (Construction and Representation of K-map)
- 卡诺图中的最小项排列遵循格雷码 (Gray Code) 序列,确保相邻方格仅有一个变量不同。
- 边界连通性 (Boundary Connectivity):卡诺图的左右边界和上下边界被视为是相邻的。
2.2.1 两变量卡诺图 (Two-Variable K-map)
- 包含 个最小项。
- 例如:
2.2.2 三变量卡诺图 (Three-Variable K-map)
- 包含 个最小项。
- 变量排列遵循格雷码,例如 序列为 。
- 例如:
- 示例:。
2.2.3 四变量卡诺图 (Four-Variable K-map)
- 包含 个最小项。
- 行和列的变量组合都遵循格雷码序列。
- 例如:
2.2.4 高变量卡诺图 (High-Variable K-map)
- 五变量及以上卡诺图变得复杂,通常通过将多个四变量卡诺图叠加来表示。
2.3 蕴含项与质蕴含项 (Implicants and Prime Implicants)
- 易混淆点:理解蕴含项、质蕴含项和基本质蕴含项的区别是卡诺图简化的关键。
2.3.1 蕴含项 (Implicant)
- 定义:任何能使函数输出为真的乘积项 (Product Term)。
- 在卡诺图中,任何由 个 '1' 组成的矩形或正方形区域都代表一个蕴含项。
- 例如:对于函数 ,最小项 (即 ) 是一个蕴含项。将 和 合并得到的 也是一个蕴含项。
2.3.2 质蕴含项 (Prime Implicant, PI)
- 定义:通过合并卡诺图中尽可能多的相邻 '1' 所得到的乘积项。它是一个不能再被任何其他蕴含项所包含的蕴含项。
- 识别:在卡诺图中,找到所有最大可能的 个 '1' 的矩形或正方形区域。
2.3.3 基本质蕴含项 (Essential Prime Implicant, EPI)
-
定义:如果卡诺图中的某个 '1' 只能被一个质蕴含项覆盖,那么这个质蕴含项就是基本质蕴含项。
-
识别:
- 找出所有的质蕴含项 (PI)。
- 检查每个 '1' 最小项。如果一个 '1' 最小项只被一个 PI 覆盖,那么这个 PI 就是 EPI。
-
重要性:所有 EPI 必须包含在最终的简化表达式中。
-
示例:简化 。
- 真值表:。
- 卡诺图:
- 质蕴含项 (PI):
- 绿色圈:覆盖 ,得到 。
- 红色圈:覆盖 ,得到 。
- 这两个都是质蕴含项,因为它们不能再扩大。
- 基本质蕴含项 (EPI):
- 最小项 (001) 只被 覆盖。所以 是 EPI。
- 最小项 (100) 只被 覆盖。所以 是 EPI。
- 因此,最终的简化表达式为 。
2.4 卡诺图简化步骤与技巧 (K-map Simplification Steps and Techniques)
2.4.1 简化步骤 (Simplification Steps)
- 识别所有基本质蕴含项 (EPI):首先找到所有只被一个 PI 覆盖的 '1' 最小项,并确定对应的 EPI。
- 覆盖剩余最小项:对于尚未被 EPI 覆盖的 '1' 最小项,选择最少的其他质蕴含项来覆盖它们。
- 逻辑求和:将所有选定的 EPI 和其他质蕴含项进行逻辑或运算,得到最终的简化表达式。
2.4.2 简化技巧 (Simplification Techniques)
- 相邻覆盖 (Adjacent Coverage):圈出相邻的 '1',确保每个圈尽可能大(即包含 个 '1')。
- 最少圈数 (Minimal Loops):使用最少的圈来覆盖所有的 '1'。
- 避免冗余 (Avoid Redundancy):确保每个圈至少覆盖一个未被其他圈覆盖的 '1'。
- 边界连通 (Boundary Connectivity):将卡诺图的左右边界和上下边界视为相邻。
- 幂次优先 (Power-of-Two Priority):优先圈出 个 '1' 的组(例如,8 个、4 个、2 个、1 个),以实现最大程度的简化。
2.5 卡诺图简化示例 (K-map Simplification Examples)
- 示例:简化布尔函数 。
- 首先将表达式转换为最小项之和形式: (重复项只保留一次)
- 卡诺图:
- 质蕴含项 (PI):
- 覆盖 的组: (一个 4 个 1 的组)。
- 覆盖 的组: (一个 2 个 1 的组)。
- 基本质蕴含项 (EPI):
- 只被 覆盖,所以 是 EPI。
- 只被 覆盖,所以 是 EPI。
- 最终简化表达式:。
3. 积之和形式的简化 (Product of Sums Simplification)
3.1 概念 (Concept)
- 之前的例子都是和之积 (Sum of Products, SOP) 形式的简化。
- 积之和 (Product of Sums, POS) 形式的简化,目标是得到最简的积之和表达式,例如 。
3.2 简化步骤 (Simplification Steps)
- 求补函数:在卡诺图中,圈出所有 '0' 最小项 (0-minterms),并按 SOP 形式简化得到函数的补数 。
- 应用德摩根定律 (De Morgan's Theorem):对 应用德摩根定律,即 ,将 SOP 形式的